1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.glib.glist;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.gnode;
34 
35 extern (C):
36 
37 alias _GList GList;
38 
39 struct _GList
40 {
41 	gpointer data;
42 	GList* next;
43 	GList* prev;
44 }
45 
46 version(Derelict_Link_Static)
47 {
48     extern( C ) nothrow 
49     {
50 	    GList* g_list_alloc();
51         void g_list_free(GList* list);
52         void g_list_free_1(GList* list);
53         void g_list_free_full(GList* list, GDestroyNotify free_func);
54         GList* g_list_append(GList* list, gpointer data);
55         GList* g_list_prepend(GList* list, gpointer data);
56         GList* g_list_insert(GList* list, gpointer data, gint position);
57         GList* g_list_insert_sorted(GList* list, gpointer data, GCompareFunc func);
58         GList* g_list_insert_sorted_with_data(GList* list, gpointer data, GCompareDataFunc func, gpointer user_data);
59         GList* g_list_insert_before(GList* list, GList* sibling, gpointer data);
60         GList* g_list_concat(GList* list1, GList* list2);
61         GList* g_list_remove(GList* list, gconstpointer data);
62         GList* g_list_remove_all(GList* list, gconstpointer data);
63         GList* g_list_remove_link(GList* list, GList* llink);
64         GList* g_list_delete_link(GList* list, GList* link_);
65         GList* g_list_reverse(GList* list);
66         GList* g_list_copy(GList* list);
67         GList* g_list_copy_deep(GList *list, GCopyFunc func, gpointer user_data);
68         GList* g_list_nth(GList* list, guint n);
69         GList* g_list_nth_prev(GList* list, guint n);
70         GList* g_list_find(GList* list, gconstpointer data);
71         GList* g_list_find_custom(GList* list, gconstpointer data, GCompareFunc func);
72         gint g_list_position(GList* list, GList* llink);
73         gint g_list_index(GList* list, gconstpointer data);
74         GList* g_list_last(GList* list);
75         GList* g_list_first(GList* list);
76         guint g_list_length(GList* list);
77         void g_list_foreach(GList* list, GFunc func, gpointer user_data);
78         GList* g_list_sort(GList* list, GCompareFunc compare_func);
79         GList* g_list_sort_with_data(GList* list, GCompareDataFunc compare_func, gpointer user_data);
80         gpointer g_list_nth_data(GList* list, guint n);
81     }
82 }
83 else
84 {
85     extern( C ) nothrow 
86     {
87 	    alias da_g_list_alloc = GList* function();																								
88         alias da_g_list_free = void function(GList* list);																						
89         alias da_g_list_free_1 = void function(GList* list);																					
90         alias da_g_list_free_full = void function(GList* list, GDestroyNotify free_func);														
91         alias da_g_list_append = GList* function(GList* list, gpointer data);																	
92         alias da_g_list_prepend = GList* function(GList* list, gpointer data);																	
93         alias da_g_list_insert = GList* function(GList* list, gpointer data, gint position);													
94         alias da_g_list_insert_sorted = GList* function(GList* list, gpointer data, GCompareFunc func);											
95         alias da_g_list_insert_sorted_with_data = GList* function(GList* list, gpointer data, GCompareDataFunc func, gpointer user_data);		
96         alias da_g_list_insert_before = GList* function(GList* list, GList* sibling, gpointer data);											
97         alias da_g_list_concat = GList* function(GList* list1, GList* list2);																	
98         alias da_g_list_remove = GList* function(GList* list, gconstpointer data);																
99         alias da_g_list_remove_all = GList* function(GList* list, gconstpointer data);															
100         alias da_g_list_remove_link = GList* function(GList* list, GList* llink);																
101         alias da_g_list_delete_link = GList* function(GList* list, GList* link_);																
102         alias da_g_list_reverse = GList* function(GList* list);																					
103         alias da_g_list_copy = GList* function(GList* list);	
104         alias da_g_list_copy_deep = GList* function(GList *list, GCopyFunc func, gpointer user_data);
105         alias da_g_list_nth = GList* function(GList* list, guint n);																			
106         alias da_g_list_nth_prev = GList* function(GList* list, guint n);																		
107         alias da_g_list_find = GList* function(GList* list, gconstpointer data);																
108         alias da_g_list_find_custom = GList* function(GList* list, gconstpointer data, GCompareFunc func);										
109         alias da_g_list_position = gint function(GList* list, GList* llink);																	
110         alias da_g_list_index = gint function(GList* list, gconstpointer data);																	
111         alias da_g_list_last = GList* function(GList* list);																					
112         alias da_g_list_first = GList* function(GList* list);																					
113         alias da_g_list_length = guint function(GList* list);																					
114         alias da_g_list_foreach = void function(GList* list, GFunc func, gpointer user_data);													
115         alias da_g_list_sort = GList* function(GList* list, GCompareFunc compare_func);															
116         alias da_g_list_sort_with_data = GList* function(GList* list, GCompareDataFunc compare_func, gpointer user_data);						
117         alias da_g_list_nth_data = gpointer function(GList* list, guint n);																		
118     }
119 
120     __gshared
121     {
122         da_g_list_alloc g_list_alloc; 
123         da_g_list_free g_list_free; 
124         da_g_list_free_1 g_list_free_1; 
125         da_g_list_free_full g_list_free_full; 
126         da_g_list_append g_list_append; 
127         da_g_list_prepend g_list_prepend; 
128         da_g_list_insert g_list_insert; 
129         da_g_list_insert_sorted g_list_insert_sorted; 
130         da_g_list_insert_sorted_with_data g_list_insert_sorted_with_data; 
131         da_g_list_insert_before g_list_insert_before; 
132         da_g_list_concat g_list_concat; 
133         da_g_list_remove g_list_remove; 
134         da_g_list_remove_all g_list_remove_all; 
135         da_g_list_remove_link g_list_remove_link; 
136         da_g_list_delete_link g_list_delete_link; 
137         da_g_list_reverse g_list_reverse; 
138         da_g_list_copy g_list_copy; 
139         da_g_list_copy_deep g_list_copy_deep;
140         da_g_list_nth g_list_nth; 
141         da_g_list_nth_prev g_list_nth_prev; 
142         da_g_list_find g_list_find; 
143         da_g_list_find_custom g_list_find_custom; 
144         da_g_list_position g_list_position; 
145         da_g_list_index g_list_index; 
146         da_g_list_last g_list_last; 
147         da_g_list_first g_list_first; 
148         da_g_list_length g_list_length; 
149         da_g_list_foreach g_list_foreach; 
150         da_g_list_sort g_list_sort; 
151         da_g_list_sort_with_data g_list_sort_with_data; 
152         da_g_list_nth_data g_list_nth_data; 
153     }
154 }